///////////////////////////////////////////////////////////////////////////
//																		 //
//	Author:		Michael Mozdzierz										 //
//	Date:		10/18/2014												 //
//	Purpose:	Prototype HUD											 //
//																		 //
///////////////////////////////////////////////////////////////////////////

#ifndef _HUD_H
#define _HUD_H

#include "IDrawable.h"
#include "VertexFormats.h"
#include "ConstantBuffer.h"
#include "ShaderContainer.h"
#include "ScreenQuad.h"
#include <vector>
#include "..\EdgeMath\Vectors.h"
#include "../Shaders/Defs/ConstantBuffers.hlsli"

using namespace std; 
using namespace VertexFormats;

class Texture2D;

class Hud
{
	ScreenQuad* screenQuad;

	Hud(void);
	virtual ~Hud(void);
public:

	/////////////////////////<Mutators>///////////////////////////////////////////////////

	void setResourceView(IGraphicsResource* value, unsigned int index) { screenQuad->setResourceView(value, index); }

	void setShaderContainer(ShaderContainer* value) { screenQuad->setShaderContainer(value); }

	static Hud* GetInstance(void)
	{
		static Hud instance;

		return &instance;
	}

	/////////////////////<Helper functions>//////////////////////////////////////////

	void DrawRectangle(int x, int y, int width, int height, Vector4 color);
	void DrawRectangle(int x, int y, int width, int height, IGraphicsResource* texture, Vector4 color = Vector4(1, 1, 1, 1));
	void DrawRectangle(int x, int y, int width, int height, RECT_F region, IGraphicsResource* texture, Vector4 color = Vector4(1, 1, 1, 1));
};

#endif